home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************
- MODULE: recio.h
- PURPOSE: header file included in application
- COPYRIGHT: (C) 1994 William Pierpoint
- VERSION: 2.00
- RELEASE: April 15, 1994
- *****************************************************************************/
-
- #ifndef RECIO_H
- #define RECIO_H
-
- typedef struct {
- int r_fd; /* descriptor */
- unsigned r_flags; /* status flags */
- FILE *r_fp; /* file pointer */
- const char *r_fname; /* pointer to name of file */
- long r_recno; /* current record number */
- size_t r_fldno; /* current field number */
- size_t r_colno; /* current column number in current record */
- size_t r_recsiz; /* size of record buffer */
- size_t r_reclen; /* current length of record buffer */
- char *r_recp; /* pointer to record buffer */
- size_t r_fldsiz; /* size of field buffer */
- char *r_fldp; /* pointer to field buffer */
- int r_fldch; /* field separator character */
- int r_txtch; /* text delimiter character */
- int r_cxtno; /* context number */
- } REC;
-
- /* constant expression macros */
- #define RECBUFSIZ 80 /* minimum size of record buffer */
- #define FLDBUFSIZ 20 /* minimum size of field buffer */
- #define RECFLDCH ' ' /* record field separator character */
- #define RECTXTCH ' ' /* text delimiter character */
-
- #define ROPEN_MAX 8 /* max no of rec streams open at same time */
- #define R_READ 0 /* read mode */
- #define R_WRITE 1 /* write/append mode */
-
- #ifdef __BORLANDC__
- #define NSBUFSIZ 34 /* string buffer sized for ltoa & dtoa */
- #else
- #error set NSBUFSIZ for this compiler!
- #endif
- extern char _r_nsbuf[NSBUFSIZ];/* buffer for numeric to string conversions */
-
- /* enumerate errors */
- enum {
- R_EINVAL=1, /* invalid argument value */
- R_EINVDAT, /* invalid data */
- R_EINVMOD, /* invalid read or write mode */
- R_EMISDAT, /* missing data */
- R_ENOMEM, /* could not allocate memory */
- R_ENOPUT, /* failed put to stream */
- R_ERANGE /* data out of range */
- };
-
- /* enumerate warnings */
- enum {
- R_WEMPSTR=1, /* data string empty */
- R_WNOREG, /* unable to register function (atexit full) */
- R_WWIDTH /* column width too small for data */
- };
-
- /* define static record streams */
- extern REC *recin; /* recin record pointer */
- extern REC *recout; /* recout record pointer */
- extern REC *recerr; /* recerr record pointer */
- extern REC *recprn; /* recprn record pointer */
-
- #define RECIN -1 /* recin context number */
- #define RECOUT -2 /* recout context number */
- #define RECERR -3 /* recerr context number */
- #define RECPRN -4 /* recprn context number */
-
- /* record status flags definitions */
- #define _R_COL 1 /* beginning column flag (bit 0) */
- #define _R_WRT 2 /* read/write stream flag (bit 1) */
- #define _R_EOF 128 /* end-of-file indicator (bit 7) */
- #define _R_ERR 256 /* error indicator (bits 8-11) */
- #define _R_WRN 4096 /* warning indicator (bits 12-15) */
-
- #define _R_ERRMASK 15 /* error indicator mask ((2^#bits)-1) */
- #define _R_WRNMASK 15 /* warning indicator mask ((2^#bits)-1) */
-
- /* functions implemented as macros */
- #define rskipfld(rp) (rskipnfld((rp), 1))
- #define rnames(rp) ((rp)->r_fname)
- #define rrecs(rp) ((rp)->r_recp)
- #define rflds(rp) ((rp)->r_fldp)
- #define rrecno(rp) ((rp)->r_recno)
- #define rfldno(rp) ((rp)->r_fldno)
- #define rcolno(rp) ((rp)->r_colno + rbegcolno(rp))
- #define rcxtno(rp) ((rp)->r_cxtno)
- #define rbegcolno(rp) ((rp)->r_flags & _R_COL)
- #define reof(rp) ((rp)->r_flags & _R_EOF)
- #define rclearwarn(rp) (rsetwarn((rp), 0))
-
- #define rgeti(rp) (rbgeti( (rp), 10))
- #define rgetl(rp) (rbgetl( (rp), 10))
- #define rgetui(rp) (rbgetui((rp), 10))
- #define rgetul(rp) (rbgetul((rp), 10))
-
- #define rcgeti(rp, begcol, endcol) (rcbgeti( (rp), (begcol), (endcol), 10))
- #define rcgetl(rp, begcol, endcol) (rcbgetl( (rp), (begcol), (endcol), 10))
- #define rcgetui(rp, begcol, endcol) (rcbgetui((rp), (begcol), (endcol), 10))
- #define rcgetul(rp, begcol, endcol) (rcbgetul((rp), (begcol), (endcol), 10))
-
- #define rputi(rp, num) (rbputi( (rp), 10, (num)))
- #define rputl(rp, num) (rbputl( (rp), 10, (num)))
- #define rputui(rp, num) (rbputui((rp), 10, (num)))
- #define rputul(rp, num) (rbputul((rp), 10, (num)))
-
- #define rcputi(rp, begcol, endcol, num) (rcbputi( (rp), (begcol), (endcol), 10, (num)))
- #define rcputl(rp, begcol, endcol, num) (rcbputl( (rp), (begcol), (endcol), 10, (num)))
- #define rcputui(rp, begcol, endcol, num) (rcbputui((rp), (begcol), (endcol), 10, (num)))
- #define rcputul(rp, begcol, endcol, num) (rcbputul((rp), (begcol), (endcol), 10, (num)))
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* function prototypes */
- /* source: recio.c */
- extern int rclose(REC *rp);
- extern int rcloseall(void);
- extern int risvalid(REC *rp);
- extern REC *ropen(const char *filename, const char *mode);
- extern int rsetbegcolno(REC *rp, int colno);
- extern int rsetcxtno(REC *rp, int cxtno);
- extern int rsetfldch(REC *rp, int ch);
- extern int rsettxtch(REC *rp, int ch);
-
- /* source: rerr.c */
- extern void rclearerr(REC *rp);
- extern int rerror(REC *rp);
- extern char *rerrstr(REC *rp);
- extern int rseterr(REC *rp, int errnum);
- extern void rseterrfn(void(*rerrfn)(REC *rp));
- extern char *rstrerror(int errnum);
-
- /* source: rwarn.c */
- extern int rwarning(REC *rp);
- extern char *rwarnstr(REC *rp);
- extern int rsetwarn(REC *rp, int warnum);
- extern void rsetwarnfn(void(*rwarnfn)(REC *rp));
- extern char *rstrwarning(int warnum);
-
- /* source: rget.c */
- extern char *rgetrec(REC *rp);
- extern int rsetfldsiz(REC *rp, size_t fldsize);
- extern int rsetfldstr(REC *rp, char *s);
- extern int rsetrecsiz(REC *rp, size_t recsize);
- extern int rskipnfld(REC *rp, size_t num);
-
- /* source: rput.c */
- extern int rputrec(REC *rp);
-
- /* source: rgets.c */
- extern int rgetc(REC *rp);
- extern char *rgets(REC *rp);
-
- /* source: rgetf.c */
- extern float rgetf(REC *rp);
- extern double rgetd(REC *rp);
-
- /* source: rbget.c */
- extern int rbgeti( REC *rp, int base);
- extern unsigned int rbgetui(REC *rp, int base);
- extern long rbgetl( REC *rp, int base);
- extern unsigned long rbgetul(REC *rp, int base);
-
- /* source: rcgets.c */
- extern int rcgetc(REC *rp, size_t col);
- extern char *rcgets(REC *rp, size_t begcol, size_t endcol);
-
- /* source: rcgetf.c */
- extern float rcgetf(REC *rp, size_t begcol, size_t endcol);
- extern double rcgetd(REC *rp, size_t begcol, size_t endcol);
-
- /* source: rcbget.c */
- extern int rcbgeti( REC *rp, size_t begcol, size_t endcol, int base);
- extern unsigned int rcbgetui(REC *rp, size_t begcol, size_t endcol, int base);
- extern long rcbgetl( REC *rp, size_t begcol, size_t endcol, int base);
- extern unsigned long rcbgetul(REC *rp, size_t begcol, size_t endcol, int base);
-
- /* source: rputs.c */
- extern int rputc(REC *rp, int ch);
- extern int rputs(REC *rp, char *str);
-
- /* source: rputf.c */
- extern int rputf(REC *rp, float f);
- extern int rputd(REC *rp, double d);
-
- /* source: rbput.c */
- extern int rbputi(REC *rp, int base, int i);
- extern int rbputui(REC *rp, int base, unsigned int ui);
- extern int rbputl(REC *rp, int base, long l);
- extern int rbputul(REC *rp, int base, unsigned long ul);
-
- /* source: rcputf.c */
- extern int rcputf(REC *rp, size_t begcol, size_t endcol, float f);
- extern int rcputd(REC *rp, size_t begcol, size_t endcol, double d);
-
- /* source: rcputs.c */
- extern int rcputc(REC *rp, size_t col, int ch);
- extern int rcputs(REC *rp, size_t begcol, size_t endcol, char *str);
-
- /* source: rcbput.c */
- extern int rcbputi(REC *rp, size_t begcol, size_t endcol, int base, int i);
- extern int rcbputui(REC *rp, size_t begcol, size_t endcol, int base, unsigned int ui);
- extern int rcbputl(REC *rp, size_t begcol, size_t endcol, int base, long l);
- extern int rcbputul(REC *rp, size_t begcol, size_t endcol, int base, unsigned long ul);
-
- /* source: rfix.c */
- extern int rbfixi( REC *rp, int base);
- extern int rbfixui(REC *rp, int base);
- extern int rbfixl( REC *rp, int base);
- extern int rbfixul(REC *rp, int base);
- extern int rfixc(REC *rp);
- extern int rfixf(REC *rp);
- extern int rfixd(REC *rp);
- extern int rfixi(REC *rp);
- extern int rfixl(REC *rp);
- extern int rfixui(REC *rp);
- extern int rfixul(REC *rp);
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-